<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>05-super关键字</title>
</head>
<body>
    <script>
        class Father {
            // 1. 把父类的无参构造函数进行了(重写) object
            // 2. 一个类里面只能有一个构造函数
            //    函数的实参和形参的个数可以不一致
            //    此时编译器无法判断调用的是哪一个构造函数
            //  A class may only have one constructor!!!!!!!!!
            //  constructor(sex) {
            //      this,sex = sex;
            //  }
            constructor(age,sex){
                this.age = age;
                this.sex = sex;
            }
            play(){
                console.log('father 在赚钱');
                return 100;
            }
        }
        class Son extends Father {
            /* 
                Must call super constructor in derived class 
                before accessing 'this' or returning from 
                derived constructor
                子类的构造函数添加属性时，必须先通过 super 调用父类的构造函数
            */
           constructor(age,sex,school){
            // 4. 子类继承父类后，构造函数中，必须先调用父类的构造函数
            super(age,sex);
            this.school = school;
            // this.age = 22;
            // 5. 构造函数中必须先调用父类的构造函数，再执行自己的逻辑(比如school这个属性)
            // 如果最后写super会报错  则
            // 防止代码冲突，违反了就近原
           }
           game(){
                // this.play();
                // 3. 调用父类的方法 super
                let money = super.play();
                if(money > 10){
                    console.log('我要买装备');
                }
                console.log('son 打电脑游戏');
           }
        }
        
        let eason = new Son(22,'男','郑州大学');
        console.log(eason);
        eason.game();
    </script>
</body>
</html>